//package com.charley.icloud.admin.security;
//
//import com.charley.icloud.admin.webapps.sysuser.pojo.entity.SysUserDO;
//import com.charley.icloud.admin.webapps.sysuser.service.SysUserService;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.userdetails.UserDetails;
//import org.springframework.security.core.userdetails.UserDetailsService;
//import org.springframework.security.core.userdetails.UsernameNotFoundException;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.Resource;
//import java.util.List;
//import java.util.Set;
//import java.util.stream.Collectors;
//
///**
// * 用户登录认证信息查询
// *   登录认证默认是通过DaoAuthenticationProvider来完成登录认证的
// *   而登录验证器在进行时肯定是要从数据库获取用户信息进行匹配的
// *   而这个获取用户信息的任务是通过Spring Security的UserDetailsService组件来完成的
// * 思路：
// *    实现UserDetailsService接口，覆写其中的方法loadUserByUsername
// *    查询用户的密码信息和权限信息并封装到UserDetails的实现类对象
// *    作为结果JwtUserDetails返回给DaoAuthenticationProvider做进一步处理
// * @author charley
// * @date 2024-04-25 13:34
// */
//@Service
//public class UserDetailsServiceImpl implements UserDetailsService {
//
//    @Resource
//    private SysUserService sysUserService;
//
//    @Override
//    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//        return UserDetails();
//        /*SysUserDO user = sysUserService.findByAccount(username);
//        if (user == null) {
//            throw new UsernameNotFoundException("该用户不存在");
//        }
//        // 用户权限列表，根据用户拥有的权限标识与如 @PreAuthorize("hasAuthority('sys:menu:view')") 标注的接口对比，决定是否可以调用接口
//        Set<String> permissions = sysUserService.findPermissions(user);
//        List<GrantedAuthority> grantedAuthorities = permissions.stream().map(GrantedAuthorityImpl::new).collect(Collectors.toList());
//        return new JwtUserDetails(user.getUsername(), user.getPassword(), user.getSalt(), grantedAuthorities);*/
//    }
//}
